// projects/oa/pages/knowledge/index/knowledge_index.js
// 导入路径解析器
const pathResolver = require('../../../config/path_resolver.js');

// 使用全局统一配置入口导入MobX相关包
const { NpmPackages } = require('../../../../../config/module_config.js');
const { createStoreBindings } = NpmPackages;
const knowledgeStore = require('../../../store/knowledge_store.js').knowledgeStore;

const { logEvent } = require('../../../helpers/log_helper.js');
const { getNetworkStatus, listenNetworkStatus } = require('../../../helpers/network_helper.js');

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		currentCategory: 'all',
		searchKeyword: ''
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: async function(options) {
		// 网络检测
		const net = await getNetworkStatus();
		if (!net.isConnected) {
			wx.showToast({ title: '当前无网络，请检查连接', icon: 'none' });
		} else if (net.networkType === '2g') {
			wx.showToast({ title: '当前为2G弱网，体验可能受影响', icon: 'none' });
		}
		listenNetworkStatus((res) => {
			if (!res.isConnected) wx.showToast({ title: '网络已断开', icon: 'none' });
			else if (res.networkType === '2g') wx.showToast({ title: '当前为2G弱网', icon: 'none' });
		});
		logEvent('page_load', { page: 'knowledge_index' });
		// 创建store绑定
		this.storeBindings = createStoreBindings(this, {
			store: knowledgeStore,
			fields: [
				'documents', 
				'filteredDocuments',
				'categories',
				'loading',
				'searchResult'
			],
			actions: [
				'loadDocuments',
				'filterByCategory',
				'search',
				'setCurrentCategory',
				'createNewDocument',
				'navigateToDocument'
			]
		});
		
		// 加载文档列表
		this.loadDocuments();
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {
		// 如果数据可能已更改，则重新加载
		if (knowledgeStore.needRefresh) {
			this.loadDocuments();
		}
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {
		// 清理store绑定
		this.storeBindings.destroyStoreBindings();
	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {
		this.loadDocuments();
		wx.stopPullDownRefresh();
	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {
		// 可实现加载更多功能
	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {
		return {
			title: '知识库 - 共享企业知识',
			path: '/projects/oa/pages/knowledge/index/knowledge_index'
		};
	},

	/**
	 * 搜索输入处理
	 */
	onSearchInput(e) {
		const keyword = e.detail.value.toLowerCase();
		this.setData({ searchKeyword: keyword });
		
		// 使用MobX中的搜索方法
		this.search(keyword);
	},

	/**
	 * 切换分类
	 */
	switchCategory(e) {
		const category = e.currentTarget.dataset.category;
		logEvent('switch_category', { category });
		
		// 使用MobX中的方法
		this.setCurrentCategory(category);
		this.filterByCategory(category);
	},

	/**
	 * 导航到文档详情
	 */
	navigateToDetail(e) {
		const id = e.currentTarget.dataset.id;
		this.navigateToDocument(id);
	},

	/**
	 * 创建新文档
	 */
	createDocument() {
		this.createNewDocument();
	},

	/**
	 * 路由测试方法
	 */
	testDirectPath() {
		wx.navigateTo({
			url: '/projects/oa/pages/knowledge/detail/knowledge_detail?id=1'
		, timeout: 10000, fail: function(err) {
        // 处理超时错误
        if (err.errMsg && err.errMsg.includes("timeout")) {
          wx.showToast({
            title: "页面加载超时，请重试",
            icon: "none"
          });
          return;
        }
        
        // 处理其他错误
        console.error("页面跳转失败:", err);
        wx.showToast({
          title: "页面跳转失败",
          icon: "none"
        });
      }});
	},

	testNamedRoute() {
		const app = getApp();
		app.globalData.router.navigateTo('knowledge_detail', { id: 2 });
	},

	testParamsRoute() {
		const app = getApp();
		app.globalData.router.navigateTo('knowledge_detail', { id: 3, mode: 'edit' });
	}
});